(function(window,underfined){
    TosnPage=window["TosnPage"]={
        "pageIndex":1,
        "pageContainer":$(".page"),
        "pageCount":10,
        "pageBtn":{
            "prev":{"class":"page_prev","name":"上一页"},   //上一页按钮的className 和名称
            "next":{"class":"page_next","name":"下一页"},    //下一个按钮的className 和名称
            "unbind":"unclick",                             //不可点击的className
            "cur":"current"                                 //选中状态的className
        },
        "callBack":""
    };
    TosnPage.bulidPage=bulidPage;   
    function bulidPage(o){
        
        var pageIndex=Number(o.pageIndex)||TosnPage.pageIndex;
        var pageContainer=o.pageContainer||TosnPage.pageContainer;
        var pageBtn=o.pageBtn||TosnPage.pageBtn;
        var pageCount=Number(o.pageCount)||TosnPage.Count;
        var callBack=o.callBack||TosnPage.callBack;
        (pageCount==undefined)&&(pageCount=0);
        pageList(pageIndex,pageCount,pageBtn,pageContainer,callBack);   
    }
    
    function pagePosition(pageIndex,pageCount,pageBtn,pageContainer){  //判断是否是第一页或者最后一页
        if(pageIndex==1){
            pageContainer.find("."+pageBtn["prev"]["class"]).addClass(pageBtn["unbind"]);
        }
        if(pageIndex==pageCount){
            pageContainer.find("."+pageBtn["next"]["class"]).addClass(pageBtn["unbind"]);
        }
    }
    
    function pageList(pageIndex,pageCount,pageBtn,pageContainer,callBack){  //建立分页主体
        var pageArr=[];
        // 大于一页时分页
        if(pageCount>0){
            function setPageList(){
                if(i==(pageIndex-1)){
                        pageArr[pageArr.length]="<a href=\"#pageTop\" class="+pageBtn["cur"]+">"+(i+1)+"</a>";
                    }
                    else{
                        pageArr[pageArr.length]="<a href=\"#pageTop\">"+(i+1)+"</a>";
                    }
            }
            
            pageArr[pageArr.length]="<a href=\"#pageTop\" class="+pageBtn["prev"]["class"]+">"+pageBtn["prev"]["name"]+"</a>";
            if(pageCount<=10){
                for(var i=0;i<pageCount;i++){
                    setPageList();
                }
            }
            else{
                if(pageIndex<=4){
                    for(var i=0;i<=4;i++){
                        setPageList();
                    }
                    pageArr[pageArr.length]="...<a href=\"#pageTop\">"+pageCount+"</a>";
                }
                else if(pageIndex>pageCount-4){
                    pageArr[pageArr.length]="<a href=\"#pageTop\">1</a>...";
                    for(var i=pageCount-5;i<pageCount;i++){
                        setPageList();
                    }
                }
                else{ //当前页在中间部分
                    pageArr[pageArr.length]="<a href=\"#pageTop\">1</a>...";
                    for(var i=pageIndex-3;i<pageIndex+2;i++){
                        setPageList();
                    }
                    pageArr[pageArr.length]="...<a href=\"#pageTop\">"+pageCount+"</a>";
                }
            }
            pageArr[pageArr.length]="<a href=\"#pageTop\" class="+pageBtn["next"]["class"]+">"+pageBtn["next"]["name"]+"</a>";
            if (pageCount>10) {
                pageArr[pageArr.length]="<span>到第<input type='text' name='pageIndex' />页<a class='button' href='#pageTop'>确定</a></span>";
            }
        }
        
        pageContainer.html(pageArr.join(""));
        pagePosition(pageIndex,pageCount,pageBtn,pageContainer);
        pageClick(pageIndex,pageCount,pageContainer,pageBtn,callBack)
    }
    
    function pageClick(pageIndex,pageCount,pageContainer,pageBtn,callBack){   //分页点击
        var pageIndex=pageIndex;;
        pageContainer.find("a").click(function(event){
            event.preventDefault();
            if($(this).hasClass(pageBtn["unbind"])||$(this).hasClass(pageBtn["cur"])){
                return false;
            }
            if($(this).hasClass(pageBtn["prev"]["class"])){
                pageIndex--;
            }
            else if($(this).hasClass(pageBtn["next"]["class"])){
                pageIndex++;
            }
            else{
                pageIndex=$(this).text()*1;
            }
            pageList(pageIndex,pageCount,pageBtn,pageContainer,callBack);
            callBack(pageIndex);
        });
        /** 跳到第N页
         *  
         */
        pageContainer.find('a.button').off('click');
        pageContainer.find('a.button').click(function(event) {
            event.preventDefault();
            var inputVal = $(this).siblings('input[name=pageIndex]').val();
            if (!inputVal) {
                return false;
            }
            var num = inputVal - 0;
            if (!$.isNumeric(num) || Math.floor(num) != num) {
                return false;
            }
            if (num == pageIndex) {
                return false;
            }
            if (num > pageCount) {
                num=pageCount;
            }
            if (num < 1) {
                num = 1;
            }
            pageList(num,pageCount,pageBtn,pageContainer,callBack);
            callBack(num);
        });
        /** 返回第一页
         *  示例：$(".page").trigger('firstPage',$("#pageCount").val());
         */
        pageContainer.off('firstPage');
        pageContainer.on('firstPage',function(event,data) {
            pageIndex = 1;
            if (data !== undefined) {
                pageCount = data;
            }
            pageList(pageIndex,pageCount,pageBtn,pageContainer,callBack);
            callBack(pageIndex);
        });

        /** 重新加载当前页
         *  示例：$(".page").trigger('reloadPage',$("#pageCount").val());
         */
        pageContainer.off('reloadPage');
        pageContainer.on('reloadPage',function(event,data) {
            if (data !== undefined) {
                pageCount = Number(data);
            }
            if (pageIndex > pageCount) {
                pageIndex = pageCount;
            }
            pageList(pageIndex,pageCount,pageBtn,pageContainer,callBack);
            callBack(pageIndex);
        });
    }
})(window);